OrdenTrabajo = function(){
	var ordenTrabajoWindow;
	var buscando
	var rowBodyTpl = Ext.create('Ext.XTemplate', [
	      '<tpl for=".">',
	      	'<div class="row">',
	      		'<div class="tplTr">',
	      			'<div class="tplTd" style="width: 20px !important">',
	      				'{expSalidaIcono}',
	  				'</div>',
					'<div class="tplTd" style="width: 150px !important">',
						'{expSalidaAspecto}',
					'</div>',
					'<div class="tplTd" style="width: 570px !important">',
						'{expSalidaRegla}',
					'</div>',
					'<div class="tplTd" style="width: 60px !important; margin-left: 8px;">',
						'{expSalidaCodigo}',
					'</div>',
				'</div>',
			'</div>',
			'</div>',
		   '</tpl>'
		]);
		var configWindow = {
			edit: "ctgProductoEditarTop",
			grid: "ordenTrabajoGrid",
			form: "detallePedidoForm"
		};
		return {
			setBuscandoOn: function(){buscando = true;},
			setBuscandoOff: function(){buscando = false;},
			getBuscandoStatus: function(){return buscando;},
			obtenerMateriales: function(){
				var i = 0;
				var grid = Ext.getCmp("ordenTrabajoGrid2");
				var seprarado = "~";
				var sepraradoAmp = "&";
				var gridData = "";
				Ext.each(grid.getStore().getRange(), function(){
					gridData = gridData + 
							   Ext.getCmp("ordenTrabajoGrid2").getStore().getRange()[i].data.cantidad + seprarado +
							   Ext.getCmp("ordenTrabajoGrid2").getStore().getRange()[i].data.colorId + seprarado +
							   Ext.getCmp("ordenTrabajoGrid2").getStore().getRange()[i].data.colorNombre + seprarado +
							   Ext.getCmp("ordenTrabajoGrid2").getStore().getRange()[i].data.materiaPrimaId + seprarado +
							   Ext.getCmp("ordenTrabajoGrid2").getStore().getRange()[i].data.materiaPrimaNombre + seprarado +
							   Ext.getCmp("ordenTrabajoGrid2").getStore().getRange()[i].data.yardas + seprarado +
							   Ext.getCmp("ordenTrabajoGrid2").getStore().getRange()[i].data.pedidoDetalleId + seprarado +
							   Ext.getCmp("ordenTrabajoGrid2").getStore().getRange()[i].data.pedidoId + seprarado +
							   Ext.getCmp("ordenTrabajoGrid2").getStore().getRange()[i].data.ctgCatalogoMateriaPrimaId + sepraradoAmp;
					i++;
	          });
				return gridData == "~" ? "":gridData;
			},
			guardaOrdenTrabajo: function(){
				Asi.message.progress(Asi.constants.SAVING);
					Ext.getCmp("detallePedidoForm").getForm().submit({
						url: Asi.constants.CONTEXT_PATH + "/empleado/guardarOrdenTrabajo",
		    			timeout: Asi.constants.TIMEOUT_SECONDS,
		    			params: {
		    				"materiales": OrdenTrabajo.obtenerMateriales(),
		    				"usuario": AsiGen.getUsuarioId()
		    				
		    			},
		    			success: function(form, action){
		    				var gridCompra = Ext.getCmp("ordenTrabajoGrid2");
		    				gridCompra.getStore().removeAll();
		    				gridCompra.getStore().sync();
		    				Asi.message.alert(action.result.message);
		    				if(action.result.pedidos){gridCompra.getStore().removeAll();
		    					Ext.getCmp("ordenTrabajoGrid").getStore().removeAll();
		    					Ext.getCmp("ordenTrabajoGrid").getStore().loadData(action.result.pedidos);
//		    					Ext.getCmp("ordenTrabajoGrid").getSelectionModel().select(action.result.ctgProductoIndex);
		    				}
		    			},
		    			failure: Asi.form.failureProcedure
					});
			},
			agregarAlMateriaPrima: function(){
				Ext.getCmp("ordenTrabajoGrid2").getStore().add({
					materiaPrimaId: Ext.getCmp("ctgMaterialId").displayTplData[0].ctgCatalogoId == null ? 0:Ext.getCmp("ctgMaterialId").displayTplData[0].ctgCatalogoId,
							materiaPrimaNombre: Ext.getCmp("ctgMaterialId").displayTplData[0].ctgCatalogoNombre == null ? "":Ext.getCmp("ctgMaterialId").displayTplData[0].ctgCatalogoNombre, 
							cantidad: Ext.getCmp("materiaPrimaCantidad").getValue()  == null ? 0:Ext.getCmp("materiaPrimaCantidad").getValue(),
							yardas: Ext.getCmp("materiaPrimaYarda").getValue() == null ? 0:Ext.getCmp("materiaPrimaYarda").getValue(),
							colorId: Ext.getCmp("materiaPrimaColor").getValue() == null ? 0:Ext.getCmp("materiaPrimaColor").getValue(),
							colorNombre: Ext.getCmp("materiaPrimaColor").displayTplData[0].ctgCatalogoNombre == null ? "":Ext.getCmp("materiaPrimaColor").displayTplData[0].ctgCatalogoNombre,
							pedidoDetalleId: Ext.getCmp("ordenTrabajoGrid").getSelectionModel().selected.items[0].data.pedidoDetalleId == null ? 0:Ext.getCmp("ordenTrabajoGrid").getSelectionModel().selected.items[0].data.pedidoDetalleId,
							pedidoId: Ext.getCmp("ordenTrabajoGrid").getSelectionModel().selected.items[0].data.pedidoId == null ? 0:Ext.getCmp("ordenTrabajoGrid").getSelectionModel().selected.items[0].data.pedidoId,
							ctgCatalogoMateriaPrimaId: Ext.getCmp("ctgMaterialId").displayTplData[0].ctgCatalogoMateriaPrimaId
							
					});
				Asi.form.clearAndEnable("ordenTrabajoForm");
			},
			buscar: function(){
				GstSolicitud.setBuscandoOn();
				Asi.message.progress("Obteniendo Informaci\u00F3n...");
				Ext.getCmp("gstSolicitudWindowForm").getForm().submit({
	    			url: Asi.constants.CONTEXT_PATH + "/solicitud/save",
	    			timeout: Asi.constants.TIMEOUT_SECONDS,
	    			params: {
					},

					success: function(form, action){
						Asi.message.alert(action.result.message);
	    				if(action.result.success){

	    					if(OrdenTrabajo.ordenTrabajoWindow()) OrdenTrabajo.ordenTrabajoWindow().hide();
	    					OrdenTrabajo.setBuscandoOff();
	    				}
	    			},
	    			failure: function(form, action){
	    				OrdenTrabajo.setBuscandoOff();
	    				Asi.form.failureProcedure(form, action);
	    			}
	   			});
			},
			requisicionWindow: function(mostrarTiposDocumentos, ctgTipoDocumento){
				if(!ordenTrabajoWindow){
				
				
				
					ordenTrabajoWindow = new Ext.Window({
						id: "ordenTrabajoWindow",
						title: "Nivel de Materiales Bajos en Inentario",
						width: 550,
						height: 290,
						modal: true,
						resizable: true,
						closable: false,
						layout: "fit",
						buttons: [
				            {
				            	text: "Mandar Requicision",
				            	id: "ordenTrabajoHacer RequicisionBtn",
				            	listeners:{
				            		click: function(){
					            		if(!OrdenTrabajo.getBuscandoStatus()){
					            			OrdenTrabajo.buscar();
					            		}
					            	}
				            	}
				            },{
				            	text: "Cerrar",
				            	handler: function(){
				            			ordenTrabajoWindow.hide();
				            	}
				            }
				        ],
						items: {
							xtype: "form",
							id: "ordenTrabajoWindowForm",
							border: false,
							bodyPadding: "5 5 5 5",
							layout: {
								type: "table",
								columns: 6,
								tableAttrs: {
						            style: {width: "730px"},
						            align: "center"
						        }
							},
					        defaults: Asi.utils.defaults({width: 155, labelAlign: "top"}),
					        items: [
				                
					                
								{
									xtype: "grid",
//									title: "LISTA DE MATERIA PRIMA A SOLICITAR",
									id: "requisicionInventarioGrid",
									height: 240,
									width:730,
//									collapsible: true,
									colspan: 6,
									minHeight: 10,
									store: new Ext.data.SimpleStore({
								    	data: [],
								    	fields: [
											"cantidad",
											"materiaPrima",
											"materiaPrimaId",
											"detalle"
								        ]
								    }),
								    columns: [
								              {header: "Cantidad",  dataIndex: "cantidad", width:55},
										      {header: "Materia Prima",  dataIndex: "materiaPrima",flex: 1},
										      {header: "Detalle",  dataIndex: "detalle",flex: 1}
								    ]
								}
					                
					                
					                
					                
					                
					                
					                
					                
					                
					                
					                
					                
			                ]
						}
					});
					
					
					
					
					
					
					
				}
				ordenTrabajoWindow.show();
				Ext.getCmp("ordenTrabajoWindowForm").getForm().isValid();

			},
			init: function(config){
				var pedidosData = config.pedidos;
				var configToReturn = {};
				configToReturn.items = [];
				configToReturn.menu = AsiBotones.getBotones(AsiGen.getTipoUsuario(), AsiGen.getPantallaId());
				configToReturn.items.push({
					flex: 1,
					title: "HISTORIAL DE COMPRAS",
					autoScroll: true,
					xtype: "panel",
					layout: {
						
					    type: "vbox",
					    align : "center",
					    pack  : "start"
					},
					defaults: {width: 750, margins: "5 0 5 0"},
					items: [
					        
					        
					        
					       
						{xtype: "form",
						id: "ContenedorPrincipal",
						flex: 1,
						autoScroll: true,
						items: [
					        
					        
					        
					        
					        
					        
					        
					        
					        
					        
					        
					        
					        
					        
					        
					        
					        
					        
					        
					        
					        
					        
					        
					        
					        
					        
					        
						{
						  	title: "LISTA DE PEDIDOS A ELABORAR",
							xtype: "grid",
							id: "ordenTrabajoGrid",
							height: 150,
							minHeight: 150,
							collapsible : true,
							collapsed:true,
							store: new Ext.data.SimpleStore({
						    	data: pedidosData || [],
						    	fields: [
						    	         
						    	    "pedidoId",
						    	    "pedidoDetalleId",
									"pedidoDetalleNombre",
									"pedidoDetalleTipo",
									"pedidoDetalleCantidad",
									"pedidoDetalleTamanio",
									"pedidoDetalleColor",
									"pedidoDetalleGarantia",
									"pedidoDetalleGarantiaDetalle",
									"pedidoDetalleFecha",
									"pedidoDetalleEntrega",
									"pedidoDetalleEstado",
									"pedidoDireccionEntrega"
				    	        ]
						    }),
						    columns: [
						        {header: "Orden Pedido",  dataIndex: "pedidoId", flex:1, width: 120},
					            {header: "Nombre",  dataIndex: "pedidoDetalleNombre", flex:1, minWidth: 120},
					            {header: "Fecha de Entrega",  dataIndex: "pedidoDetalleEntrega", flex:1, width: 120},
					           
					            

						    ],

						    listeners: {
						    	selectionchange: function(model, records){
						    		if(!records || records.length <= 0) return;
						    		var record = records[0];
						    		if(record != null){

						    			Asi.form.setValues("detallePedidoForm", record.data);
						    			Asi.form.setEnable(Ext.getCmp("detallePedidoForm"));
						    		}
						    	},
						    	afterrender: function(){
						    		if(this.store.data.items.length > 0) Asi.grid.selectFirstRow(this);
						    		Asi.form.switchButton(configWindow, "edit");
						    	}
						    }
						},{
				        	xtype: "form",
							id: "detallePedidoForm",
							minHeight: 150,
							flex: 1,
						    border: false,
						    autoScroll: true,
							layout: {
								type: "table",
								columns: 6,
								style : {
									width : "730px",
									"margin-top" : "5px",
									"margin-bottom" : "40px"
								},
								align : "center"
							},
							defaults: {
								width: 230,
								selectOnFocus: true,
								enforceMaxLength: true,
								maxLength: 200,
								typeAhead: true,
								minChars: 1,
								queryMode: "local",
								forceSelection: true,
								allowEnable: true,
								colspan: 2
							},
							items: [
					        	 {
									xtype: "label",
									text: "DESCRIPCION DE PRODUCTO",
									cls: "x-form-item label_header",
									colspan: 8,
									width: 730
								},
								{xtype: "label", text: "Nombre", cls: "x-form-item label_spacing"},
								{xtype: "label", text: "Tipo", cls: "x-form-item label_spacing"},
								{xtype: "label", text: "Cantidad", cls: "x-form-item label_spacing"},
								{
									xtype: "textfield",
									fieldCls: "txtborder",
									id: "pedidoDetalleNombre",
									maxLength: 100
								},{
									xtype: "textfield",
									fieldCls: "txtborder",
									id: "pedidoDetalleTipo",
									maxLength: 100,
									listeners: {
										change: function(){
											if(Ext.getCmp("ordenTrabajoGrid").getSelectionModel().selected.items[0].data.pedidoDetalleTipo == "1"){
												Ext.getCmp("pedidoDetalleTipo").setValue("CORTINA");
											}else{
											Ext.getCmp("pedidoDetalleTipo").setValue("ALFOMBRA");
											}
										}
									}
								},{
									xtype: "textfield",
									fieldCls: "txtborder",
									id: "pedidoDetalleCantidad",
									maxLength: 100
								},
								{xtype: "label", text: "Tama\u00f1o", cls: "x-form-item label_spacing"},
								{xtype: "label", text: "Color", cls: "x-form-item label_spacing"},
								{xtype: "label", text: "Estado", cls: "x-form-item label_spacing"},
								{
									xtype: "textfield",
									fieldCls: "txtborder",
									id: "pedidoDetalleTamanio",
									maxLength: 100
								},{
									xtype: "textfield",
									fieldCls: "txtborder",
									id: "pedidoDetalleColor",
									maxLength: 100
								},{
									xtype: "textfield",
									fieldCls: "txtborder",
									id: "pedidoDetalleEstado",
									maxLength: 100,
									listeners: {
										change: function(){
											if(Ext.getCmp("ordenTrabajoGrid").getSelectionModel().selected.items[0].data.pedidoDetalleEstado == true){
												Ext.getCmp("pedidoDetalleEstado").setValue("EN FABRICACION");
											} else {
												Ext.getCmp("pedidoDetalleEstado").setValue("ENTREGADO");
											}
										}
									}
								},
								{xtype: "label", text: "Garantia", cls: "x-form-item label_spacing"},
								{xtype: "label", text: "Fecha de Compra", cls: "x-form-item label_spacing"},
								{xtype: "label", text: "Fecha de Entrega", cls: "x-form-item label_spacing"},
								{
									xtype: "textfield",
									fieldCls: "txtborder",
									id: "pedidoDetalleGarantia",
									maxLength: 100
								},{
									xtype: "textfield",
									fieldCls: "txtborder",
									id: "pedidoDetalleFecha",
									maxLength: 100
								},{
									xtype: "textfield",
									fieldCls: "txtborder",
									id: "pedidoDetalleEntrega",
									maxLength: 100,
									listeners: {
										change: function(){
											if(Ext.getCmp("ordenTrabajoGrid").getSelectionModel().selected.items[0].data.pedidoDetalleEntrega != null){
												var str = Ext.getCmp("ordenTrabajoGrid").getSelectionModel().selected.items[0].data.pedidoDetalleEntrega;
											    var res = str.substring(6, 8) + "/" + str.substring(4, 6) + "/" +   str.substring(0, 4);
												Ext.getCmp("pedidoDetalleEntrega").setValue(res);
											}
										}
									}
								},
								{xtype: "label", text: "Direcci\u00f3n de Entrega", cls: "x-form-item label_spacing", colspan: 6},
								{
									xtype: "textfield",
									fieldCls: "txtborder",
									id: "pedidoDireccionEntrega",
									width: 730,
									maxLength: 100,
									colspan: 6
								},
								{xtype: "label", text: "Detalle de la Garant\u00eda", cls: "x-form-item label_spacing", colspan: 6},
								{
									xtype: "textarea",
									fieldCls: "txtborder",
									id: "pedidoDetalleGarantiaDetalle",
									width: 730,
									maxLength: 1000,
									colspan: 6
								}
								
								

							]
		
				        },
				        
//--------------------------------------------------------------------------------------------------------  otro form (form para materiales a utilizar)    
				        {
				        	xtype: "form",
							id: "ordenTrabajoForm",
							minHeight: 150,
							flex: 1,
						    border: false,
						    autoScroll: true,
							layout: {
								type: "table",
								columns: 6,
								style : {
									width : "730px",
									"margin-top" : "5px",
									"margin-bottom" : "40px"
								},
								align : "center"
							},
							defaults: {
								width: 230,
								selectOnFocus: true,
								enforceMaxLength: true,
								maxLength: 200,
								typeAhead: true,
								minChars: 1,
								queryMode: "local",
								forceSelection: true,
								allowEnable: true,
								colspan: 2
							},
							items: [
							        

					        	 {
									xtype: "label",
									text: "MATERIALES A UTILIZAR",
									cls: "x-form-item label_header",
									colspan: 8,
									width: 730
								},
								{xtype: "label", text: "Tipo de Producto", cls: "x-form-item label_spacing", colspan: 3},
								{
									xtype: "combo",
									id: "ctgProductoTipo",
									name: "ordenTrabajo.ctgProductoTipo",
									colspan: 3,
									store: new Ext.data.SimpleStore({
										data: Asi.combos.cortinasalfombras() || [],
										fields: ["id", "descripcion"]
									}),
									displayField: "descripcion",
									valueField: "id"/*,
									listeners: {
										change: function(){
											if(Ext.getCmp("ctgProductoTipo").getValue() == 1){
												Asi.combos.loadData("ctgMaterialId", config.ctgMaterialCortina);
											} else {
												Asi.combos.loadData("ctgMaterialId", config.ctgMaterialAlfombra);
											}
										}
									}*/
								},
								{xtype: "label", text: "Material", cls: "x-form-item label_spacing", colspan: 3},
								{
									xtype: "combo",
									id: "ctgMaterialId",
									colspan: 3,
									name: "ordenTrabajo.ctgMaterialId",
									store: new Ext.data.SimpleStore({
										data: config.materiaPrima || [],
										fields: [
										         "ctgCatalogoId",
										         "ctgCatalogoNombre",
										         "ctgCatalogoCantidad",
										         "ctgCatalogoMateriaPrimaId"
										        ]
									}),
									displayField: "ctgCatalogoNombre",
									valueField: "ctgCatalogoId"
								},
								{xtype: "label", text: "Cantidad", cls: "x-form-item label_spacing", colspan: 3},
								{
									xtype: "numberfield",
									id: "materiaPrimaCantidad",
									name: "ordenTrabajo.materiaPrimaCantidad",
									allowDecimals: false,
									allowNegative: false,
									minValue: 0,
									colspan: 3
								},
								{xtype: "label", text: "Yardas", cls: "x-form-item label_spacing", colspan: 3},
								{
									xtype: "numberfield",
									id: "materiaPrimaYarda",
									name: "ordenTrabajo.materiaPrimaYarda",
									allowDecimals: true,
									allowNegative: false,
									minValue: 0,
									colspan: 3
								},
								{xtype: "label", text: "Color", cls: "x-form-item label_spacing", colspan: 3},
								{
									xtype: "combo",
									id: "materiaPrimaColor",
									name: "ordenTrabajo.materiaPrimaColor",
									store: new Ext.data.SimpleStore({
										data: config.ctgColor || [],
										fields: [
										         "ctgCatalogoId",
										         "ctgCatalogoNombre",
										         "ctgCatalogoPadre",
										         "ctgCatalogoHijo"
										        ]
									}),
									displayField: "ctgCatalogoNombre",
									valueField: "ctgCatalogoId",
									colspan: 3
								},
								{xtype: "label", text: "", cls: "x-form-item label_spacing", colspan: 4},
								{
									xtype: "button",
									colspan: 6,
									iconCls: Asi.constants.icons.SHOPPIN_CAR,
									cls: "background",
									tooltip: "Clic para Agregar Material",
									text: "Agregar Material",
									handler : OrdenTrabajo.agregarAlMateriaPrima
									
								},
								
							//----------------------------------------------------------termina el form	
							//----------------------------------------------------------comienza el grid	
								
								
//------------------------------------------------------------------------------------------------
							]
				        },
				        
				        {
							xtype: "grid",
							id: "ordenTrabajoGrid2",
							minHeight: 150,
							height: 240,
							width:730,
							collapsible: true,
							colspan: 6,
							store: new Ext.data.SimpleStore({
						    	data: [],
						    	fields: [
									"materiaPrimaId",
									"materiaPrimaNombre",
									"cantidad",
									"yardas",
									"colorId",
									"colorNombre",
									"pedidoDetalleId",
									"pedidoId",
									"ctgCatalogoMateriaPrimaId"
				    	        ]
						    }),
						    columns: [
						              {header: "Material",  dataIndex: "materiaPrimaNombre", flex: 1},
								      {header: "Cantidad",  dataIndex: "cantidad",flex: 1},
								      {header: "Yardas",  dataIndex: "yardas",flex: 1},
								      {header: "Color",  dataIndex: "colorNombre",flex: 1}
						    ]
//						    ,listeners: {
//						    	change: function(dv, record, item, index, e) {
//						    		if(this.store.data.items.length > 0) {
//						    			Asi.utils.setDisabled("requisicionInventarioGuardarTop", false);
////							    		Ext.getCmp("requisicionInventarioAgregarTop").setDisabled(false);
//							    	} else {
////							    		Ext.getCmp("requisicionInventarioAgregarTop").setEnabled(false);
//							    		Asi.utils.setDisabled("requisicionInventarioGuardarTop", true);
//							    	}
//						        }
//						    }
						},
				        {
							xtype: "button",
							colspan: 6,
							iconCls: Asi.constants.icons.SHOPPIN_CAR,
							cls: "background",
							tooltip: "Clic para Crear Crear Orden de Trabajo",
							text: "Crear Orden de Trabajo y Enviar",
							handler : OrdenTrabajo.guardaOrdenTrabajo
							
						},

				        
				        
				        
				        
				        
				    
				        
				        
				        
				        
				        
				        
				        
				        
				        
				        
				        
				        
				        
				        
				        
				        
				        
				        
				        
				        
				        
				        
				        
				        
				        
				        
				        
				        
				        
				        
				        
				        
				        
				        
				      ]} 
				        
				        
				        
				    ]
					
				});
				return configToReturn;
			}
		};
	}();